/*****************************************************
Copyright (C) 2020. All rights reserved.
File name     ：LinkedQueue.h
Version       ：v1.0
Author        ：zhengqijun
Date          ：2020-01-03
Function List ：
Description   ：Linked Queue
******************************************************/

#ifndef LINKEDQUEUE_H_
#define LINKEDQUEUE_H_

#include "SearchTree.h"

// Type Definition
struct Node;
struct QNode;
typedef SearchTree QueueElementType;  // ElementType -> QueueElementType
typedef struct Node *PtrToNode;
typedef struct QNode *LinkedQueue;
typedef PtrToNode QueuePosition;  // Position -> QueuePosition

// Function Lists
int IsEmptyQueue(LinkedQueue Q);  // IsEmpty -> IsEmptyQueue
LinkedQueue CreateQueue(void);
void DisposeQueue(LinkedQueue Q);
void MakeEmptyQueue(LinkedQueue Q);  // MakeEmpty -> MakeEmptyQueue
QueueElementType Front(LinkedQueue Q);
void EnQueue(QueueElementType X, LinkedQueue Q);
void DeQueue(LinkedQueue Q);
QueueElementType FrontAndDequeue(LinkedQueue Q);

#endif  /* LINKEDQUEUE_H_ */

// EOF

